{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import tensorflow as tf\n",
    "from tensorflow.examples.tutorials.mnist import input_data\n",
    "from matplotlib import pyplot as plt\n",
    "import warnings\n",
    "warnings.filterwarnings(\"ignore\")\n",
    "%matplotlib inline\n",
    "\n",
    "#tf.logging.set_verbosity(tf.logging.INFO)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Extracting E:\\anaconda3\\Lib\\site-packages\\tensorflow\\mnist\\train-images-idx3-ubyte.gz\n",
      "Extracting E:\\anaconda3\\Lib\\site-packages\\tensorflow\\mnist\\train-labels-idx1-ubyte.gz\n",
      "Extracting E:\\anaconda3\\Lib\\site-packages\\tensorflow\\mnist\\t10k-images-idx3-ubyte.gz\n",
      "Extracting E:\\anaconda3\\Lib\\site-packages\\tensorflow\\mnist\\t10k-labels-idx1-ubyte.gz\n",
      "(55000, 784)\n",
      "(55000,)\n",
      "(5000, 784)\n",
      "(5000,)\n",
      "(10000, 784)\n",
      "(10000,)\n"
     ]
    }
   ],
   "source": [
    "mnist = input_data.read_data_sets(r\"E:\\anaconda3\\Lib\\site-packages\\tensorflow\\mnist\")\n",
    "\n",
    "print(mnist.train.images.shape)\n",
    "print(mnist.train.labels.shape)\n",
    "\n",
    "print(mnist.validation.images.shape)\n",
    "print(mnist.validation.labels.shape)\n",
    "\n",
    "print(mnist.test.images.shape)\n",
    "print(mnist.test.labels.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAeEAAAHiCAYAAADf3nSgAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzt3Xd8lEX+wPHvpBBKQleUXkNTyin2ggIWxN4b6qEo2DgV9fT8eZyn3lkBsVFU7PVQsWEFGwoiSpFepIP0HpLs/P5ImHlmzYbNZjeTbD7v18vXfWdndneOJ7vffWaemUdprQUAAJS9FN8dAACgsiIJAwDgCUkYAABPSMIAAHhCEgYAwBOSMAAAnpCEAQDwhCQcoJTSSqkdSqn7o2zfTym1vfB5rRPdP5QMxzO5xHA8hxS210qptET3DyXHZ1REsVmHpZTSItJGa72wsHysiHwc1qyGiJyntX4n0vNQPhRxPOuLyHsi0k5EUkVkjojcprX+rrjnoXwo7rgopa4QkRdE5Bqt9ejA481FZImIpGut88qmp4hWUcdUKZUqIkNE5K8ikiUiC0XkBK315uKeV1Hx67AYWutvRCRzb1kp1V1ExovIJ776hFLZLgUf7AUiokXkTBEZr5Tany/oikspVUdE/i4is333BXExRESOEpEjRWSZiHQUkd1ee5RADEeXzBUi8rbWeofvjqDktNa7tdbztNYhEVEiki8idUSkrt+eoZQeFJHhIrLed0dQOoU/qAZJwYjG77rALK01SbiyU0pVF5HzRGSs776gdJRSM6Tgl/X7IjJaa73Oc5cQI6XUYSJyqIg847sviIuDRSRPRM5TSq1RSs1XSl3vu1OJxHB09M6Vgl/ak3x3BKWjte6klKoqImeLSBXf/UFsCucOnxKRG7XWIaWU7y6h9BqLSC0RyRaRFiLSRkS+UErN11p/5rVnCcKZcPSuEJEXNVeyJYXCoenXROROpVRn3/1BTAaKyAyt9WTfHUHc7Cr8339prXdprWeIyOsi0ttjnxKKJBwFpVQTEekuIi967griL11EWvruBGLSQ0TOLhy2XCMFF/M8qpQa4blfiN2Mwv+tNCc7DEdH53IR+V5rvch3RxA7pdQRUvA3P0UKlijdJCINRORHn/1CzK4UkaqB8v9E5G0RGeOlNyg1rfUipdQ3InK3UuomKfiBfKGIXOy3Z4lDEo5OXxF52HcnUGoZUnAVbUsRyRWRmSJymtZ6lddeISbBdaMiIkqpPSKyVWu9xVOXEB8XS8EPqQ0isk5E7tFaf+G3S4nDcLQrR0SmKaXuCz6otW6ntf7Tr2ul1FVKqc2FzwuVUR8RPed4aq0naa07a62ztNZ1tdbHa62/3tuY41nuFfn53Etr3T1so457ReTXwudVmuHNCuZPx1RrvVJrfYrWOlNr3VJr/ezeumT8jLJjFgAAnnAmDACAJyRhAAA8IQkDAOBJmV4d3SvlfCagPfks9FbctxPiePqTiOMpwjH1ic9ocon2eHImDACAJyRhAAA8IQkDAOAJSRgAAE9IwgAAeEISBgDAE5IwAACekIQBAPCEWxkCAMq/lFQTzh/V1amaffJTJj79igEmTvtiWuL7VUqcCQMA4AlJGAAAT0jCAAB4wpwwAKDcSWvWxCnPf7CeiZd0Hx3WuoqJNreycf0vEtK1uOJMGAAAT0jCAAB4wnA0Ko3UDtkmnjugjlO34JynTRwS9xasKWJvC/rU5hYmHvtYb6ddvTGT49JPoLJKa9ncxL/dXd+p+/MQtHXN8qNN3OCb9SbOj1/XEoYzYQAAPCEJAwDgCcPRSCppTRo75d/uPcDEr534rIm7ZoScdqHA79GQuHXB36r9ay80ccM7XnFaPTfhWBPnrVgZfafxJylVq5q46dfKqXuq0XcmTlX22MzZs9Npd+vJfU2cP2+hoHxS6fZq5jn/rGviJT0jDz+3/PyvTrlt/99MHNq9II69SzzOhAEA8IQkDACAJyRhAAA8qfRzwqtvOcopq8DqlKobbGFTO/d5B062F79XHT8lIX1DdBY/dKSJ5176pFMXXG4UXGoUCvv9+eHOWiaesr1lxPc6pMZSE5+budWpWzVhlok/6OgugcK+BeeBV75ul4J90OiVopqLiEj3WWeZWD3qLmnJWPRLqfuU1rypifOWLiv16+HP5o3obOIlPUdFbNd64pUmbtP3Z6cu/CqOioQzYQAAPCEJAwDgSbkcjl53vTtEvLlTronHnTQiru/VvsrUiHW7dZ6Ja6VUc+rWXb7DxKuGu/+Mj63pZeINF9Q0cd7yFTH3E5Gd38suWQnf7cpdbmR/cz65uZXT7rOTO5q4uOVF351+kYnPeOZppy64fOkD6VZ8p/EnC/9pb9Q+t9uTEdu1+eJqE7cdMM/EoR1LnXbuX0J05o90j9t7Jz1h4gtfuMWpa/rP72N4BywceoRb7vNUoGQ/oy0/c5chZfefbeJYjm15xZkwAACekIQBAPCEJAwAgCflZk54/ig7FzO39zCnLkOlB0tl1KPw93Xtn1ojELt1Lzb72sSXvdHdxJsuaeq0Y8lDKRx2sAmvq2fnZj/ceYDTLLjcaNbWhibOGbyf027RQ/YgZt9X3anLn2O3wQsuR0t/1j3wuYGJqpV3uNc1NPov84fh9JGdnfLXlzwcKNljsCzP3Y4yu59dChbK3VPqfuT2PMTE43q515x0DGypiNjtOcV+v487a6hTl6rs0jRnGdJVvzrtdKgi3BOp5DgTBgDAE5IwAACelJvh6KdPeNHE4cPA/93QxsTr9mTF9Pr/m2aHnJqOV8W0jM6KHvb3y0O9X3Xqgjspvdx8ookve7W7027ThfaOPyxfKqEpM03Y/9wBJk5dvdFp5i43WmOilXe4u2LNOd4uRTl11DVOXeocG2/oZ3fnytXTnHbB5VDNXvnd7Ud4/yFr73CHkvdPtUPQu7St6zvoVqdd9dwf49qP7X+zn9eDq7jfPdt1jolbvLXBqUvOwdHEqHf3EhN3qlLVqes153QTZ99rj0V+kg4/h+NMGAAAT0jCAAB4Um6Go4deeJ6J/9GlplO3/7t2V5z8De5wY7SyJfLOWLFoPd7Go5/r7dSted3u4HR97eUmDg5Ni4i07W+HUZvfw3B0rPRUOzQd7bBv1fXunjsjtzQ3cZW12526xUPslc4vXG6HrYM3hBARmZZjf9MWt+sWCvTP/jZi3dnzzjdx9XGRh59Vmv0KU9WqRWwXLv9gOx3xePvnI7brPu0qE+8/e27Urw/XTY0+j1i3daydlqu9YHJZdKdc4UwYAABPSMIAAHhCEgYAwJNyMyesp9k7ZNRzV36U+6UAoRnuXNHzj/cx8fVDng5vbrx6md0Z7K57Dot/xyqhXWe6/44b29k/8eA8cL2Z7rxv/1pLTdzlA3d50WEZ9nnBZUhTc9zfsP/oZ5c2pYp703GUTFb6bhPvCKvLPelQE9e9Z6mJ32j5aQneYVKRj34Xdkz3+0/Z7dCXbLZcZu+WdFzVX0x89IxznHa1X/qhzPpUHnEmDACAJyRhAAA8KTfD0UA8rLrQ3YVpzvF2OiC4pCgUdlvwYF1w+Dm8LrgM6fK3b3Datfyq8i2vKI2Ro053ytfdZm+e8GJLuwbwuu9PcdqNaWaPaZqE3T2llK4cf51TbjO5cg+VlsbmM8InEgrsfN+9yUqmXpy4TqSE/X2Uw124OBMGAMATkjAAAJ4wHB0HK+5y7x0b6rotquc1SLVDp3knHuLUpX05Lbw5YhC8mjn4m9N9vPi6/stPNPHyv9ubiTD8XDo7GocfA6uasvfxHdvsy7BaO8R46xp7NfxHE7o5rXIPtJ+vhSeNiqpP9X8u/c1dUODAOluLfLzahsjHPVY5p9pjv/4ae//pgxqsdtptO8/+XeWtXiPlAWfCAAB4QhIGAMATkjAAAJ5U+jnhtJbNnfLCfgea+KmLRkb1Gt2rursjparofts0Tss08cjnhzl1A5sdE9VrwNXwjSpO+fxGdhnMQTVXmfi6et877RoFbigf/tt00YPtTVztqylx6CVERLKf/cMpt8+9PqrntX7J3kktNG+RiVvkuXP0i/9zZFSvN3Dl0Sau+6p7LYYOb4yI0g5o4JRHtX0lUMqU0kqtXcvEZ01e4NRdmDXcxLVSIt9Nq+OIS03c+FzmhAEAqNRIwgAAeFJphqO3n3+4if/4i/3t8a9zXnfaXZS1KYZXL/1vmZ6fD3LK2fJTqV+zMqr2njtcnPOejacFjlP/bgOcdtvus7v7fHnwG07dMf+0uyb9Oq2JifNWrCxVXyu7/PmLnHKLOxdFaBn2vChfP21ndMuNfhrdxcT1c1l2FrP0dKfYNK10Q9DrBrpLP8+6dqKJ+9daFdY68hB00H5ZRe/i5RNnwgAAeEISBgDAE5IwAACeJNWcsOra0cS1R7jblX3U3N55JdolRO/usHMas3Y1jtjug4e6O+XUHLuw4Yp/2bvB/Hkew6qyJj1iXWWR1sT9N85bviJh76WnznTKmYEb9Zw/yb27z7jWH5n4oKvt0rGm/2ROuDxTxUwe5wVmluvMzymD3iQ/vc3drnfkloYmLu67L7V+PRMv/2tbE88c9FQce1dgy66qJt4/7q8eG86EAQDwhCQMAIAnFXo4+vch7iXs91xkl5ZcmrXBqVuWZ++sMXdPHRPf+NrVTrvqq+2yhgMnrjdx/m/zI/ajlkS+8feCvwd2kQkbklmSu93Ezd/bLpXRrjPtXXCCS4FERD743U4vHHjWnDLr05ZHmjrl0DN2eiG3za4y6wdK56qLJ0SsO3+hnXJInfhzxHaIXv7mLU75tRX2zkb9a9m1gkff8aPTrtt9i018QeYXce3TkD86OOWGN9klSnlxfafYcSYMAIAnJGEAADyp0MPRtbutc8rBIegev53h1OU+cYCJg7sqNZfIO+REuzNPuNDxXU18Vu0xgRr3N8/GUOBmA1Pcq3WTWfAq6Asf/NjEP21t7rQryyHo4Obw5/3HHcZMEW70XhGk7refU26TsTBi2/VPNzdxlpSPjfyTze7n7c1wch7ONfHDB0yP+3vlavtt3WFSPxNn/92dlsz7fXnc37u0OBMGAMATkjAAAJ6QhAEA8KRCzwnX6+cu62l9i70zTqvB7lxvmiwrkz6JiGzKtruyHF018u+c/rMuM3F9ibwEKtn8foldAhRcuvD49J5Ou1YS/7kj47CDneKpz39t+1TbnUsMBX6rps+P7m4tKHtbTmjllE+vbuf2t2t3V6yq63MFiVXzVbvk8Md/2x0Bj6taVOt9y9chEx/60yVOXZW37bLTli/Z7/7ysgypOJwJAwDgCUkYAABPKvRwdN5qd2lBq8HlY6nBhm5FD4LM2bPTKWc9VavIdsmu0Vd2o/f0m1NNfHOXL512Y248zcT1ZrvDiWlfTivytVM7ZDvlVT3qmzjzNPv38dXBLzjtgsuQQmG/TbM/vtbGQ74v8n3h3xVD3o9YtyTXPabpnxf994Oy1+7by02sZmWZuMXw2U47nW+Ho/ffNjfxHSsjnAkDAOAJSRgAAE9IwgAAeFKh54TLi5NnbXXK42o/GSjZrSmvmH2F067Ox1MT2a3yK7BF59EzzjHxlwe/4TS77s4nTBySkFM3ZN0hRb70GbVec8pdM+zzUgK/OcNfL/h7tO3b1zs1HR62W91VhCUPlVW91Mh3Intk9clhj2xObGcQUYenBzrl5g/abYR1nv2ExbptcEXDmTAAAJ6QhAEA8ITh6Dg4r+YMp1w9JdPE83PtTaSrj6hdZn2qKGpfs8fEQ953h5gfaGD/XXO1+7z79v/FxCGxleF3PAouN1qbv8vET204ymn36YijTdxmjLvbGkPQFd+eUOq+GyFh7m/ZxcRNxF3mp8MbVzKcCQMA4AlJGAAATxiOjtG6gXY4s0Gqe5Xzklx7lebFDww2cf2P3WFOiOQtX2HiX09v4tS1/m/RV0CLiMzpPtrEx824wMR/bKwZ8Tmth9qBZT11plNXTzg2yWxU8w+c8iGP/s3ErW79Ibw5UGY4EwYAwBOSMAAAnpCEAQDwhDnhKKmMDKd87nX2jj/bQnucut5TBpi46bPMNUYrb8VKp9zq0pURWor0ETtfXFMWBeLIKvtSiGR39+uXOuV2fR+zcbr7+ZWQu5QN8IUzYQAAPCEJAwDgCcPR0Qq5g5kvjT/BxB//2t2pa/omSx6Astbs/9ypn1v+78iIbVuxJA3lBGfCAAB4QhIGAMATkjAAAJ4wJxwlnesuQ2p+N3NKAIDS4UwYAABPSMIAAHiitGYfIQAAfOBMGAAAT0jCAAB4QhIGAMATkjAAAJ6QhAOUUloptUMpdX+U7fsppbYXPq91ovuHkonhePYsPJ4hpVTPRPcPJcPnM/nEcEyHFLbXSqmk2OeCJPxnnbXWd+8tKKVGKqXmFX4xXxlsqLUeo7XOLPMeoiTCj+eJSqmflVJblVKLlVL999ZprT8vPJ7LvPQU0eDzmXzCj2kXpdQ0pdTOwv/tsrdOa32viHT00ssEIQnv268iMlBEfvbdEZSOUipdRMaJyLMiUktELhSRx5RSnb12DKXB5zOJKKWqiMh7IvKyiNQRkbEi8l7h40mJJLwPWusntdZfiMhu331BqdUVkZoi8pIuMFVE5ohIB7/dQqz4fCad7lKwnfJQrXWO1nq4iCgROdFrrxKIJIxKQ2u9VkReE5GrlFKpSqkjRaSZiHzrt2cACnUUkRna3UVqhiTZEHRQUkxsAyXwmoiMFpFhheUBWuvlHvsDwMoUkS1hj20RkSwPfSkTnAmj0lBKtRORN0Skr4hUkYJf17crpU7z2jEAe22XgimjoJoiss1DX8oESRiVyUEiMk9rPUFrHdJazxORD0XkVM/9AlBgtoh0UkqpwGOdCh9PSiThfVBKVVFKVZWCiwPSlVJVlVL8u1VM00WkTeEyJaWUaiUifaTgCltUQHw+k85EEckXkZuUUhlKqRsKH//SX5cSiz/WfftURHaJyFEiMrIwPs5rjxATrfUiEfmriAwXka0iMklE3hGRMT77hVLh85lEtNZ7ROQsKZgy2iwFn9ezCh9PSiRhV46ITFNK3bf3Aa11d621CvtvooiIUuoqpdTmwueF/HQZxSjqeL6ptT5Ia52ltW6stb5Dax0SEVFK9Sg8ng2k4Nc4yhc+n8mnqGM6XWt9iNa6mtb6L1rr6XvrlFL3SsHIVY6IJMV9eLmfMAAAnnAmDACAJyRhAAA8KdPNOnqlnM/Ytyefhd5S+25VMhxPfxJxPEU4pj7xGU0u0R5PzoQBAPCEJAwAgCckYQAAPCEJAwDgCUkYAABPSMIAAHhCEgYAwBOSMAAAnpCEAQDwhCQMAIAnJGEAADwhCQMA4AlJGAAAT8r0LkoV2ZLXOznlb49+2sSX9L3RqUv96ucy6ROAyBY9eoSJbz7lY6fuo4uPNHFoxtwy6xP24Qj7PbvkZvcmRPOPH2vi1hOvdOpaXfJLQruVSJwJAwDgCUkYAABPGI6Okl5WwynXO7aaiTe2zXDq9vuqTLqEOMo5rZuJN16z3amb3u2VqF7juhXHmvjbjzs7dS2fXWzivNVrYuki9iGtUUOnPOLM503cq9oup27s4b1NXG9GYvuF4q0ZdJSJH7jhOROfVG2H0y5X23jYYa87dcOlXZGvvfbGo5xyw1ft1EP+ho0l7msicCYMAIAnJGEAADxhODpKNVaoiHUHXPi7U85/JtG9QSxUehUTz3+sq1P34emPm7h1uju9EIry9Z9p/I19zjVfO3VdDu5r4sbnMhydCIuubeaUw4eg4Y/KsJ+pTRf8xan7+rZHTVxdVZHSWvF3OwQ99fqhTt2b1zc28fCh5zp1+z0zudTvHQvOhAEA8IQkDACAJyRhAAA8YU44DnblpTvl0s9qIBHmPdHFxPNPf8qpS5GqJg6Jlmj0X97dKY9uMili2+Fd7JKKR+sdb+LyskwiGTQ5eoXvLiCCxf+088Cz+44Iq43uG/OZzS1N/OxLpzl1jeR7E+fUs1dxpKtUp92lWatN3O3Ox5y6y+UWE5fl/DBnwgAAeEISBgDAE4ajo1TztNUR67a84+7Us5/8HqElEi24DEnEHYKe3Sc4DOYOU63O32ni48bd5tS1HLfHxBkL7PKi/PUbnHZd37jUxNO6vezU/byruYn1ntwIvUdJ7e5zmImHtXwirDZd4E9wWVKNDptK/PyPd2Y55XduP8nEjT78Prx5iWWHfVe8/vdHTHxy10G23bVTS/1exeFMGAAAT0jCAAB4QhIGAMAT5oSLkd/dXlY/vuOTTt0ve+ycYoNXZjl10W5ziPhbff2hTnn+6cF5QnvMxmxp6rT73zW9TNzmux8ivn5eMe+dkxN5DnL8Snuz8mrblhTzKiiJXfXsMT24CnPAPqk0N50s+pf9/vzt0PBlSUULLvtbd647J5yxMrq52eYf2ms4OjW70qmbduQYE4cvX2qRZpcp1pxbdn9LnAkDAOAJSRgAAE8Yji5Gfob9jZKp3Dvr5Gq7q1Jo27Yy6xOKN6D/e045Rezdrx7c0MHEk8/Idtqppb9E9fqpNWuaeMXVBzl1t3f6n4mn73EnJaqdzBC0T9/luOcbWcuLm1hALHJ6uncm++2y6Iagb151tInXnmaHgfM3rIqpH6lf/Wzipl+5dePmHWjiCzLXxfT68caZMAAAnpCEAQDwhOHoYiw9m98oFU1+2O/K4M0YPnqgu4mzlka+AlpS3Ksm84/vbOI+I74w8XW13bGu4ND3afPOCnvRlZHfDzFrd93sqNoNXdHLKVf5JLG7IFUWa286ysQDB7wb1XOCw88iIkuOt5/Z0M7Kd0MTsgwAAJ6QhAEA8IQkDACAJ8wJFyPrAJYeJZPqa/bsu5G4c8AiIh+/PCqq5529sLeJU87d6dTlR/UKKKmBDYLz8ipiu3kft3HKjeWPBPUouaV0bu+U/3OT3YGqR7Wd4c2N4E5YwWVIIomdB1ZdOzrl5uk/R2gpsjA3x8S1FpfdEjbOhAEA8IQkDACAJwxHI6ks2NXAfaDWUhM+9+JwE/9nbU+n2cTfW5v4k8OGi6uaibaEdpu424d/c1q1u9Uulwnt2BFtl1EGmr3rDj8zPRCbY19yh3OLG4IOmvruwSZutOH7uPapOPMGVHfKh2XoCC1FJuywO+pVe29KwvoUjjNhAAA8IQkDAOAJw9FhUqrae0oe0yjypvuj1h0fKG1PYI9QEnOu7+A+8M6PJjww1Q4rD2v4ndMspaEdIgsFhp/DnfDEYBNnP+QOq3Ef6bIR3KWpbXrwGFR12q3MDwyV5jEAHav11x5p4gF1Hg2rtTe2WZ2/y6m55Xe7a1zT/601caKPRFqLZiaedMrjYbWRP9vfbmwdKK2Pb6eKwZkwAACekIQBAPCEJAwAgCfMCYdJqV3LxE80/Dhiu0nf2hu6t5Ji7siDhMs5rZuJl1/k7nSTUswuSkGpKvB7VLuzuz1mn2Pihg+V3fIKFEhtsL9T7nrJTBPXTKka3tzoPu42E7dZwGc0VtvsFKtkpmREbPfIuhPc5x0bnFctuznWedcfaOLgdSDhNgWWG4qIrBnWysQ1mBMGACD5kYQBAPCE4egwec0b7LuRiDT9JDfBPUFQSqd2TvmAkStNPLrJsyYOibsjTqRlQ3eu6eaU/zflUBM/3WusUzem7csm7nuBHeLMfJMhzjJRv45THN3kkyKbbQ0bXsxawjlGWfrk80OdcguZXHZvruy0k06N7im3rTjVKdd4+8cILROLv1IAADwhCQMA4AlJGAAAT5gTDrP+7t1FPt577hlOucrEX00c+b4cKI31/e12eRPuecSpq+UsTYm8DOnW1UeY+OMv7ZxV9uPulqTZq+1dUx454VKn7uOXR5n4onvtsrUP3nTnKpEY+TWqRNVuZq57x5wDhrKcrCwd+J2/rUG3XHq4iede8GRUz/n+O3eLW19LTTkTBgDAE5IwAACeMBwd5umDXgmU7LXuq7bWdNo1zFtRRj2qPLZddIRTDg5B1wrbGWlOrl0i9viaXiaeN7Sj067Wu7+YuOVuu2TC3VfLlTrpV6fc7s3rTfzr+UNNPO6kG5x26Z/+VMyrIlZZj66Oqt2A6e40QmOZnYjuIIJmd811ymvHx/f10xo3MvGC65s6dT9eFry7U+RdvV7bZpegZj+/yanzNZjOmTAAAJ6QhAEA8KTSD0enNXeHNbKUvaIyVaWXdXcqtfWd3Kucg0PQ43bUdeqev+A0E4d++c3EWWFXOEbaMas4KdXcoe+Of1lq4ozA30QoLbqbQ6Dk0po0NnF25rKI7S5d2tPEza5e5dT5u1a3cjqm9kKn/G4bO72Uv2BxVK+R2r6NiRdcUd+pG3re8yY+qdqOsGdGHoIOGnv9mSZOmz0tquckGmfCAAB4QhIGAMATkjAAAJ5U+jnh3aPdcna6nQ/MD9zcPfNNd4kSEi8lsBPWHV9d4NRl/zI1ru+VWr+eiauPc+d632j5UaDEPHBZWNO7iYnf3/99py5V2XOHTbvtLlkpe9wlJyrd7rSlc/fEu4uVRpvRdonYkN5dnLp797NLAK+qudypS33ffn/O3NlYotGlxiQTX5oV3dK0cO/vsDvZ3fb5RU5dux/ssrVYrhdJBM6EAQDwhCQMAIAnlXI4OjW7lYlvbf5+xHYXL7E7MdV83c8NnyuT+jPcW2FsCu0y8dTeQ526bs8OMnH7//vdxPlr10V8/bRGDU28o3Mjp27QsNdMfFr1LU5dcNjqyc32b6faN3MjtkPiBKeJPmoX+PzOd9u1eXugjW/2szl/MshbvNTEE4Yf49QNGmL/XcN3tetbc6UtBOM42Knd6YUnN9ph8q//2s3E2T9NcdqVx88oZ8IAAHhCEgYAwBOSMAAAnlTKOeE9jWqZuEe1nIjt5r/R1sQNNDcIT7Ss1915u+NaDzbxrwOecOrm93nGxLNPsvdEGrTgwoiv/0p7e4es8Pmr4HKo8HmjW1fb7ffm3mhvBK62/SpIjKob7VFYlLfLqWuVVq3I5+wKmyesvppzjHir+9xkp/x/A3qY+Lr9Jjp17dPju+1v8HqMl4ad6tTVHxns16y4vm+i8VcKAIAnJGEAADyplMPRxbluxbHOhi8NAAAgAElEQVQmbvjaPBNzR5ayV3eu/Vd/ZnNLp65D1RUm7l7VDiV/1vGdYl6xasSaZ7Y0M/HjH/Zx6trcM93EajdD0GUh8y27JPCCAwY7db/8/SkT/3t9OxO/M/JEp12jEUwhJdqibrtNfGfri926Kw8w8cmn/GTiRw90p506vniDiVUxX7StXt1g4vq/TY7csILhTBgAAE9IwgAAeKK01vtuFSe9Us4vuzeD47PQW3G/84DP45nWvKmJF/yndsR2D/7lXRN/v621icdPONxp1+KuijW8lYjjKcJn1Kdk+4xWdtEeT86EAQDwhCQMAIAnJGEAADxhiRIqpLyly0zc4qJlEduNlODSJrsLUwupWHPAAJITZ8IAAHhCEgYAwBOSMAAAnpCEAQDwhCQMAIAnJGEAADwhCQMA4AlJGAAAT0jCAAB4UqZ3UQIAABZnwgAAeEISBgDAE5IwAACekIQDlFJaKbVDKXV/lO37KaW2Fz6vdaL7h5KJ4Xj2LDyeIaVUz0T3DyUTw/EcUtheK6W4Y1w5xHcuSbgonbXWd+8tKKVOV0rNKjzw3yulOuyt01qP0Vpn+ukmohR+PE9USv2slNqqlFqslOq/t05r/Xnh8Yx8b0T4Fn48uyilpimldhb+b5e9dVrre0Wko5deoiTMMVVK1VdKfaeU2qCU2qyUmqyUOnpvw2T8ziUJF0Mp1UZEXhGR60SktoiMF5H3+VVdMSml0kVknIg8KyK1RORCEXlMKdXZa8cQE6VUFRF5T0ReFpE6IjJWRN4rfBwV03YR+auI7CcFx/S/IjI+mb9zScLFO1lEvtFaf6u1zpOCP4hGInK8324hRnVFpKaIvKQLTBWROSLSofinoZzqLiJpIjJUa52jtR4uIkpETvTaK8RMa71baz1Pax2SgmOZLwXJuK7fniUOSbh4qvC/8PJBfrqD0tBarxWR10TkKqVUqlLqSBFpJiLf+u0ZYtRRRGZod7ODGcIQdIWnlJohIrtF5H0RGa21Xue5SwlDEi7eZyJyvFKqe+EQ110iUkVEqvvtFkrhNRH5PxHJEZFvRORurfVyv11CjDJFZEvYY1tEJMtDXxBHWutOUjBqdYkk+Y9kknAxtNZzReQKERkhIqtFpL6I/CYiK3z2C7FRSrUTkTdEpK8U/JjqKCK3K6VO89oxxGq7FHxRB9UUkW0e+oI4Kxyafk1E7kzm6zZIwvugtX5ba32Q1rqeiNwrBcOXUz13C7E5SETmaa0naK1DWut5IvKhiJzquV+IzWwR6aSUCk4ZdSp8HMkjXURa+u5EopCE90EpdUjh/OF+UnBV7fjCM2RUPNNFpE3hMiWllGolIn1E5FfP/UJsJkrBhTs3KaUylFI3FD7+pb8uoTSUUkcopY5RSlVRSlVTSt0hIg1E5EfffUsUkvC+DRORzSIyr/B/r/HbHcRKa71ICpY/DBeRrSIySUTeEZExPvuF2Git94jIWVIwvbBZCo7tWYWPo2LKEJEnRWSDiKwUkd4icprWepXXXiUQd1EKUErtloILdoZrre+Jov1VIvK4iFQVkQ5a68UJ7iJKIIbj2UMKknKGiPTWWn+V4C6iBGI4nveKyC1ScDxraK3zE9xFlBDfuSRhAAC8YTgaAABPSMIAAHhCEgYAwJMy3RS7V8r5TEB78lnoLbXvViXD8fQnEcdThGPqE5/R5BLt8eRMGAAAT0jCAAB4QhIGAMATkjAAAJ6QhAEA8IQkDACAJyRhAAA8IQkDAOAJSRgAAE9IwgAAeEISBgDAE5IwAACelOkNHICyltasiYk3H97IxKv77HHaDfjLJBMPqjPfqTvo26tMHFpaw8Sth/zqtAvt3Bm5HwceYOK81Wv21W0gqeT1OMTEGzpmOHW79rf3mNCtd5j4js6fOu361bKfm092uq8xeGQ/Ezd86PvSdbaMcSYMAIAnJGEAADxhOBpJZdXgo5zy3Ve/ZuKzM9dFfF5K4PdoSEJO3YxjxtjCMTbsvPtmp12zeyMPg2W8kW/ivOMiNsNeyt6Kdd2AI52qATe+a+L+tVbF9PIjtzQ08btnHGHi0NIVTjud605bIHpbLrP/rl/+Z7iJM5SbdkJS9C2PU8S9HW+utu16VHOnfr696VETH5V6q4kbP1j+h6Y5EwYAwBOSMAAAnjAcHSalc3sTz7ulmokv7/Kj0+7GulNM3OPRwU7dAUPL/xBIMkntkG3i4PCzSOQh6D/yc5zy73nVTZwv6U7doVXskGRqYJj016uHOe26bbXD0wc+6v4NHFN3kYknSM0i+1TppaSacPndh5t45nUjIj4lR9th/lV57jGtGhjN3D+1ulPXr6Yddu438W0TD9vU2mn3RZ+DTJy3dFnEfuDPtp613cTpyh7b8OHnZXm7THz3ijMivt6Pc1va16vhThN8e/TTJj7qLLtqYflj7lXUOsf9GykPOBMGAMATkjAAAJ6QhAEA8KRSzgmrDDtPsKb/IU7dj3faeb5tITvvcMTrtzntvu5i546Ov2yqUzdvaFy6iSjNvTPTxOFzwMFjeMJP15i4wbCqTrvUiT9HfP3119olMn0Gfm3iu+r/4rTLd6efHN9ubBUo/RG5YSW2cnC088B5Ju78qp2Hb3n7ZKddavs2Jp779yynbtaJz5g4uGTm5joL3Tf7wIafd2/hVOWv3xCxjxBpfs1KEw/8xK7Lm7XxAKddncBKv/z5iySSbNkYse7wZ/5m4vmn2/nhLrfe6LRr/ED5u16HM2EAADwhCQMA4EmlGY5OqWqHH+cO7WTihae7w15PbLZDWG8NOcXErd4MG+rKtsOLM1p1cer06XZtRNpOu4Qi7YtpJe02ovC/Y58OlNzflQN/t0seGp79W0yvX/9Ze+y/XGe3zLprxC9FNS/SvE/s31VjhqNFRESluV8/VY6Obnj3oP/ZIcY2YUPQQflzFth2fd26Y/vbMdCH7hhp4u5Vc512weHpL7IOdl+E4ehi5W/aZOLpo+yUTu1F7jKh/PmRp4Kilbqj6PPJjr3nOeUtD5T6reKOM2EAADwhCQMA4AlJGAAAT5J2TjilurtN3cpXm5l4YTe7POGxTW2cdhNuPN7EmV/9EPH1g5fSV9+01akbNHmiiUevsZfmb/liH51GTA6uYreZDN8Sb+p8u6wkW0o/h5c1y87nfrvbXeZUb3ZeeHNDq4hVlVZq08ZOeeohrxXZ7onNLZ1yu2fsXGN+eOMo1R9p55LHXXOoibs3jDzHjNjVG+3n37VP/V+d8ivSOEJLfzgTBgDAE5IwAACeJNVwdHAIeu6jBzl1wSHoRza2NfHXZ3Rw2qUuKfnl8suvdIe0e1SbYOKN+9nXe7F2J6dd/uYtJX4v/NkJs8418WcHvenUje0+2sT3i7uULFp5PeyuavvdZ6chWqa5x6/+rUtMvOM99zVU0fctr9SWXtgwYt12bZexvP7AKU5drd8iTxPFYvGVzU383Xj3bmlHZ4RMvKC/29+W99gdoXRe5KkIxF/Oqd2c8pW9JhbZ7t11XcMeKX/LAzkTBgDAE5IwAACeJNVw9B+XdjbxwjOedOo+3Gk3+f/6zI4mzluytNTvu6dW5LHGObvtEBbDz4mROcj+GT/9tjs10L/WfBPPf+owE3f472qn3dqT7FWTp98wyanrW9ve1KNhWvAuDe4dG15sOd7EfXq7G8fnVWM8WkQktV5dE99xxZsR2729zV7VXuuV+A4/h8ufbXdVumJCf6du4Rl2GmtOX/c75bR3Attw/TQrMZ2rxFJr1nTKay+239vXDnLne/rVXGHipXm7TLzhYfemG1UZjgYAAHuRhAEA8IQkDACAJxV6Tjitkbtk4PbBr5p4Zf5Op+7BeweauObi0s8xpbVsbuI+p/4YuSESLni3nJeGnerUDbjX1s09MzCnd6b7GimB36MhCbmVYXO/e92x5kinPP5ru/NSu5krnLprH7J3cJpwjzvXVZmowN3MLs1a57EnRas5N+wr8Yyi24mIzLvO/n/JvjpBHUpCKV3cZaGrutc28da2dqnXNUe712YMrvdVMa9qt6Tr+dEtJs4ePyXGXpYdzoQBAPCEJAwAgCcVejg6VM8d1ju3ht3Y/V/rD3fqar5a8iHo4E3HVw46zKm785o3THxRZvm77L0y2XWmPTbHXjs17q/f7/deJv7jlqYmTpmx0GnXeqf9G2P/pNL5alO7QGmzt34gemkHHuCUr5hkb9pwcvU1Jk4Xd4g4XaWW+r2Puc1ON2a/Ef/vgETiTBgAAE9IwgAAeFKhh6OLc0bN6U75g/43mzh9Z+TdizaeZndb+eCop0zcKs0dQnl3h72ir/X71zl1wV12pm5sFqhZVXynEbWNV9krky+49VMTD6ozP6xldL8zg0NiHZ50d7tqcv/3gZIdGg2/hro4KaokrZPX4qubR9Vu1uv2CtoG8n0xLVFe6Dru9ODZNTYGSlUS+t7ODVJCsd5l2g/OhAEA8IQkDACAJyRhAAA8qdBzwqGZ85xy9pv2MvX5Fzzl1E25170DSjQ+2VXPxGeN/qtT1/ShaSZu13ar+8TALjsLpto54ZbMCccsrVkTp3zPXWNNfGr1bSYO3+1qY769OfwZM+wxfPGgF5x2rdPtrlhpu0vV1SKFNL93RUR2N9vjuwtIlNXuUs3Dp11i4q77rzTxN18e7LSrtlZJUXY1cK/d+de5r5v43Mz1Tl3vuyaa+CPpbuKs1xN7B6544JsBAABPSMIAAHhSoYejRbvDFa3/ZoceDpt7vVMX6r1JirJ5XZZTbv6Ojat8YndeaRK2TCL4znrGXKfu3+sPMvFlJ9tNyL+/PbGX6Seb1LatTfzghJedurbpdknRsjw75Nz75cFOu9ZP/W7iuivt8qU+L7l/H3NPHG3bnRw2bfB4YEefGJc/jHn1FBM3ZskNklD+Jvc7dr8zbDl4O5MWMlli8dITdhfEJ56v7tR9ebDdwXDSNW1sxZthu3GVw+VLnAkDAOAJSRgAAE9IwgAAeFKx54SLUf/ZsHmHZ4tut38c3iu1Xl2n3LW6nZuetrNFHN6hclpwb6aJg3PAIiKf77Jz+f+8/yYTN3/ePe6R7mbU+nJ3W9NzJ51m4gkd33Lqjhhotzzdf0Rs87mNH2AeeF9W5+80cc1l5f8+VDUWco1HWcpbbe/ElHmKW3fr1GNM/FG7d018xDU3OO3+lBfKAc6EAQDwhCQMAIAnSTscXZZ0I3dQ+7Tq20188zf2bj/Z8lOZ9SkZvHDEcxHrHr75chPX/bD0Q0yLPmlpC+4Illw9cLyJ3x9RT5AYWSl2yiGnpo2rJfh9U9vbJS2XXTMh6uc1G7vYxOV/8Dw+UuvUccp6j90BLbRjR1l3x/jk664mfvwiO/Vz9vVfOe2+ebZqmfUpWpwJAwDgCUkYAABPGI6Og5W96kasS1ufXoY9SS6pgX3JUsJ+L2ZsyAlvXirNX7BDiy/3dW8WcXS1hSb+sH62ifPXb4hrHyqDrNmBK4pPdusylb2JxpE3293q5ryY2D41esHukHZLnQUR27Uf6+6y1vKPqRFaJpe0Jo1N3OG9lU7dB+/Z6bamQxK7AkBl2L+PZYMPcepu7/1uePOCPlVZH/ZI4yLb+cSZMAAAnpCEAQDwhCQMAIAnzAnHQU4dve9GKLGXNxxl4q4Nv3Xqlv7Nxi0f7GDi0C+/xfReOs/eXWVLvnuHlvZV7G/VdWfbOeF6o6JfGrXtoiNMXBFuNJ4oTV5fagu3RG53cHV73505ckDc+7H4P3Yu881GjwVqMpx2o7bY6wNaP77QqcvPqxwLk7Yc1sjE/2nwvlN319XfmfiQ+n9z6tqO3lri91p8fm0T59YJOXX39XzbxBdkuvPPKaJMHHzWU/ed57SrJeXvs8eZMAAAnpCEAQDwhOFolFuffv4XW+jrDkfPOGaMiVe9Z5crPbquh9Pu42+6SjTGnTPUxOE3i5ieY3+r7vfKryZ2B8uKd94/PjXxhNdrluCZyUUHdlUatqm1U3dzHTvce3HWMhPf/2Jvp13bR+yNHkIz5kb1vtvPP9wpT7/scRNXCyyNCg4/i4i8f66dEsn/I/LypWRWY+UuE/97/UFO3T/qzzLxvHOecupSzgkOEQeXGyqnXbDOeX6U7URE1gVu/nH0e7eaOPtt90Yt5XHikDNhAAA8IQkDAOAJSRgAAE+YE06AVGV/29SZ7bEjFVzroYtM/OOF7vafh2fkmrhxmr3PzqNhS5kevdAtR5Ii9vVDYbO9H2/rZOt27pRYjJpztImbysyYXiMZ5G/eYuIv+rjzi/KBDYPzwwt6jHaavXSYXbL039fdJShBl57zpY1rPerUVVPVw5uLiMgTL5/plBvPSexWjBXCDzNM+PUtRzpVJ/3dzuv/r90bTl1wG9Lw+d0gd3mRnbV9ZZt7d7rzMu32oh0/GejUNRtnX6PNhz+auDzOAYfjTBgAAE9IwgAAeMJwdALkazucWWfOdo89qdjy164z8X9OOdepmzdwPxP37/GFiQfVjW3HrH7LTjDx1AnuMGnLMcsCpRUSi6bnV94h6Ejyli5zyq8OC9xW6eZAWMfdqeryrDU2vmZElO/mDj+/sLWhid8573gTN57zoyCytC+muQ/Yj56ccfrNTtWqi/eYeMqxdvnSefMuctqt/8De2UgFZoIavuIuPxvb2U4VZH/5U9R9Lu84EwYAwBOSMAAAnjAcnQDBq6MRH/nzFznl1oNs+UupEYi7xfgOdrP5puJeEVs5tun3L3hDjE9fqG/iz5t3cdrNvcFeNXvMYXb64dspHSSSdiM3OeXQ/CUm1rnzSt5Z/EnV8VOccsvxNr5I7M5jaeJOQxwQVt4rP6yc9uXGUvWvvCJbAADgCUkYAABPSMIAAHjCnHACLMq1y5JSN9sdlsLnOAAUTefa5S35CxY7dW1utuW1wceLuWE7nz2UV5wJAwDgCUkYAABPGI6Og+b/mOyUB/7jmEDJXVoDAMBenAkDAOAJSRgAAE9IwgAAeEISBgDAE5IwAACekIQBAPBEaa199wEAgEqJM2EAADwhCQMA4AlJGAAAT0jCAAB4QhIOUEpppdQOpdT9Ubbvp5TaXvi81onuH0qG45lcOJ7JJ4ZjOqSwvVZKJcW9D7g6OkAppUWkjdZ6YeCxkSJyvIi0EZG/aq1fiOZ58C/8uCilskXkYRE5SkRSRWSqiNyktZ5X3PNQPhRxPI8VkY/DmtUQkfO01u9Eeh7KjwjfuV1EZIyItBeROSLST2v9S6C+uYgsEZF0rXVemXY4ATgT3rdfRWSgiPzsuyMotdoi8r6ItBWRBiIyRUTe89ojxExr/Y3WOnPvfyLSR0S2i8gnnruGGCmlqkjBZ/JlEakjImNF5L3Cx5MSSXgftNZPaq2/EJHdvvuC0tFaT9Faj9Fab9Ra54rI4yLSVilVz3ffEBdXiMjbWusdvjuCmHWXglvsDtVa52ith4uIEpETvfYqgUjCqMyOE5E1WusNvjuC0lFKVReR86TgzAkVV0cRmaHdedIZhY8nJZIwKiWlVGMReVJEbvHdF8TFuSKyXkQm+e4ISiVTRLaEPbZFRLI89KVMkIRR6Sil9hORT0XkKa31a777g7i4QkRe1FxpWtFtF5GaYY/VFJFtHvpSJkjCqFSUUnWkIAG/r7WOalkEyjelVBMpmEt80XNXUHqzRaSTUkoFHutU+HhSIgnvg1KqilKqqhRcHJCulKqqlOLfrQJSStUUkQki8p3W+k7f/UHcXC4i32utF/nuCEptoojki8hNSqkMpdQNhY9/6a9LiUUy2bdPRWSXFKwtHVkYH+e1R4jV2SLSTUSuKtzEYe9/TX13DKXSV7ggKylorfeIyFlScEw3i8hfReSswseTEknYlSMi05RS9+19QGvdXWutwv6bKCKilLpKKbW58HkhP11GMZzjqbUeW3j8agTXl2qtl4lwPCuAP30+RUS01u201mPCG3M8K4SivnOna60P0VpX01r/RWs9fW+dUupeKdi7IUdEkmL+nx2zAADwhDNhAAA8IQkDAOBJmd6FolfK+Yx9e/JZ6C2171Ylw/H0JxHHU4Rj6hOf0eQS7fHkTBgAAE9IwgAAeEISBgDAE5IwAACekIQBAPCEJAwAgCckYQAAPCEJAwDgCUkYAABPSMIAAHhCEgYAwBOSMAAAnpCEAQDwpEzvolTRLBj7FxPP6znKqTvxhoEmrj7uxzLrEwBUBqkd2zrlpefUM/GhvWc5dS82+9rEuTo/qtfvcf0Ap1zt3Skl7WJccCYMAIAnJGEAADxhOLo42t6TOSQhp2plDxu3GVdWHcJeaS2amXj52Y1MvC07z2nXNnulice3fd/E2R9c57RrPMH+Hq05fY1Tp7fvNHH+H3+YWKW5H59VNx1m4rxqbn+bPjLNvl5OjgD4s62XHGHi0+6c6NSNqzcz4vNytf38hn9XR/L00GFOefC8vibOn7MgqteIB86EAQDwhCQMAIAnDEfHqFX7VSZWGRlOHcON8bdm0FFO+afBT5g42uGnYKv5fZ5x6/pEfo03th1o4uf+draJVx3rfnxmXuEObwWdPvEaE6vvftlXV4GklVK1qlNe9M+uJp59+QgTR/u5jlV2ehWnPOfmOrbuuvDWicOZMAAAnpCEAQDwhCQMAIAnzAnH6KN275r4zMxeTl0+c8Jxkdq6hYnH3vx4WG3J/3THbd/fxOdmro/6eRdmrbbx6KdMnBL2GzY4gzU9x61L3bK7yHaVzdqb7Nz+1kN3F9MysdIz7FK2Wcc8H7Fdn0aHlEV3kp+yyz2Dc8AiIjMvHx4olf68sMObN0as++2CJyLWPXjCWyZ+/rA+tmJK5KVR8cCZMAAAnpCEAQDwhOFolFuretulQe2rRP69eOLMC01c476aEdulr95s4jENazt1OfXscoWBD73l1J2duW7fnRWRWXu0iQffOtCpqz6Lm3yIiOw4wu4+Nuf4URHbBYf6Y12qEu1rBGte3tokpvfCn4WOtcPOi/vbx387cXgRrf/s7e0HOOV/fGuXBzZ53/0+qPaevflCa/nBxKprR/dFL4j8fsHP+fCWNUycleD7OnAmDACAJyRhAAA8IQkDAOAJc8Iot465fFrEutX5u0y8dmYDE6eeGvn1Gvxk533XHprqvldPuwwh2jngcB9s7WLi6uOYAy5Km4FLTHxO1tlO3ZIrm5o4p46dqVVaYhKqv8fEc3o+G7Fdu4/s/H372xeG1W6K7c0ro8AyJJHweeCRUb3E6fPOMHHonv2cuuzvfoq9b+UYZ8IAAHhCEgYAwBOGo1FuffhTZxM/dPo3Tl3TtEwTz7lkhETlKhumK3c4OlfnB0rub9P1gaHvY9+6zcQTz3/EaXdXfTuk3f2C6526zDd/EIjkb95iC8FYRJrctyKu77X9AnuDeOnp1i3MtTtmtX94o+3fJoafSyJ4R6TwnbCiXYr0Y066ifWJK02sZGVRzZMOZ8IAAHhCEgYAwBOGo1FuZQ+wW9X8pV4/p27m0S+YOJYdlXLDrrh9f4e9ofewJT2cupRh9U3c6iM7rHxsjVucdnNPf9LEq3rlO3XZb5a4iyil1X32RKwbssJu0J8/f1FZdCcp6fatTOzeiCGy9l9c65RbjbSf3xT5JT4dq0A4EwYAwBOSMAAAnpCEAQDwhDlhVAgth7jze907Xh+hZWxq/7TGxNUWLwmrDS/v28HZy51yTiydQqks6DHaxKGw841pU9qYuLVsKLM+JZuVPWqZOKWYc7pxO+qauM2IXLdyykwpK8E+/nmZoo21u/lXQnEmDACAJyRhAAA8YTgaFUL+7HlOOXN2fF8/b99N/qRtduQdfWbOd28Ony1rIrREooREB2J3GVusN4Wo7NKaNHbKp1wy2cTFLRW848sLTZw9ZUrEdvG24h63HOxj+DLFK5babdXqfPibid3FhvHHmTAAAJ6QhAEA8ITh6OIExqzCr/wLv7IOlUNuz0NMPKGte4/UyYGN6Ns+tdOpY/Qz8XadeVjYI5HvR51f116hu/hVex/oQ5otc9oNOvAz+xxxL5m95rkbTNzk39+XpKsV1sZj3eHofzcYF7Ftr1kXmLj97XNNnOjh3aVvdDLxc11eiPp5i55pZ+LaWycX0zK+OBMGAMATkjAAAJ6QhAEA8IQ54eIEtk0Jv/w+eHn7nAdaOXXZ124UJI+UrCwTPzDSzgOHXxfw9XY7p6Snx3kNVRJKbbC/U952VAsT76przw9Szlkf1euN7Tg07JGMiG3nnvRMVK/Z7/deJp72SQenrvlj9o4/Jb+PV8W04Yyd+25UaPmKeibO3lryXedidXunT018aEbkGeh+y05wyvU+WWjiRM9bB3EmDACAJyRhAAA8YTg6HqpUlsGoyiG1Xl2nvP1Vu0l914zIO+48N+l4E7eRHxPTuQou96RDTZx1z1KnblzLESYOLgksbicmV/q+mxQKDjP/cUvTyA1/mGHCpuIuQ6qMn/q7unzilIu7aUN2v58S3R1j68d2SrBvzeDStMj9++25jk653h9ltywpiDNhAAA8IQkDAOAJSRgAAE+YEwbCLO/Xzin/dNCwItv9e30np9z+8bUmjuWuTJXB76far5wJLSc4da9sa2TizfnVTfzeqs5Ou3VfNZKiDO/3rFPuUc0uNOn288VOXd0+8wOlzcV3Gka+ds/bop+vL73U2vbajIXPNHPqZnd6Pqo+dXjzRhO3HuVnDjgcZ8IAAHhCEgYAwBOGo1EpBXfBEhFZ+0pDE7/T+eGw1lVMNHyTHaqe8NCxTqtai3+IXweTVO05dhe67I+uc+raD7ZDxPmbt5i4ivzutGscVt7r10vcIcrjqi6IuZ/wL3jHMhGRBvfZ4zmu6Ziw1kWfT36+y/2ctx1ldzMsy12xisOZMAAAnpCEAQDwhOFolFtrBh1l4io93U38H+3wpolDOrrfkvcvPc3EQ1q869QFd8IKDj+H++pCu+NTraL+eqQAAAP+SURBVNkMP5dU/ZGTA7Fbl8jhwfSX6+67EeJqw9VHmrje6OiuRJ7/vB2CbtZog1M3qukXJe7DjR9f4ZTb/Fb+drLjTBgAAE9IwgAAeEISBgDAE+aEUW5su/AIp/zT4Ccitk1XqSbO1blRvf5H7ew8cPD5Ba9h4y2h3U5dj0cGm/iA2e6ddOBXaoP9TdwwveilSyIiabsr4z2P4u+hGSc55b7HPB+hpUiHfrNN/NOB9vqO/hd95LS7vvYiE6erX0ycq8OvEoh8zhj8PGePvcHEbf5ePnbFKg5nwgAAeEISBgDAE4ajw6g0+0+SUWOPx55UPqt7ubc9KG4j9uDwcSybyAefH/4a/7emh1PX6NM/TFxedtlBgW1HtTDx2ZkfhtVyjhFvjUemO+XJ3eww8OEZ7rSQs6TousjLi4Kf3mg/18Gd60RERo23w+Qt//mzicM+5uUSf6UAAHhCEgYAwBOSMAAAnjAnHCalRVMT/3LUcxHbBZexNPyIf8ZYpdaz2wlefMgUjz2xHm/4jVP+anymiZ84pruJ89asLasuIQopYecUwc9o2nZm8+Mh7YtpTvm2IQNM/M0Dw+P6XivycpzyQ2t7mXj5lU2cuha/2aVIFWEeOIgzYQAAPCEJAwDgCeOo4TZuNuHBL95k4kOPm+s0W/FwGxNnvlv+7sxRUeR2sDdiv3f/CXF//VN+O8/Eayc1shXKbXfnpfauTBdmrXbqTqi23cRPZES+wxL8Cl/S8uKWg02c/vm08OaIg/qf2N2uuja52ambPmBYqV777GG3O+UDHwvuVje/VK9dnnAmDACAJyRhAAA8YTg6TP6GjSZuEdj8e0NYu2pSPq7krejSV9vh/2OmX+rUfdv1lYjPW52/y8S9XrI3WGg9coXTLmOVHVpukht5g//Xn+lq4jeqH+nUbT2koYmztibPMFiyGzXnaBM3lZkee5K88teuM3GTf69z6s74d7dSvfaBUjlulsKZMAAAnpCEAQDwhCQMAIAnzAnDq/yFS0xct49bd4ZEN6fUXOzcfV4x7Yrtxx9/RKyr/vty2y7G10dirOwZuS7zo8zIlUA5wZkwAACekIQBAPCE4WgAFVbKbrv12aMbDnLq6j4/Obw5UO5wJgwAgCckYQAAPCEJAwDgCXPCACqsVrf+YOJJUs1jT4DYcCYMAIAnJGEAADxRWmvffQAAoFLiTBgAAE9IwgAAeEISBgDAE5IwAACekIQBAPCEJAwAgCckYQAAPCEJAwDgCUkYAABPSMIAAHhCEgYAwBOSMAAAnpCEAQDwhCQMAIAnJGEAADwhCQMA4AlJGAAAT0jCAAB4QhIGAMATkjAAAJ6QhAEA8IQkDACAJyRhAAA8+X8tgscturQpyQAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 576x576 with 16 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(8,8))\n",
    "\n",
    "for idx in range(16):\n",
    "    plt.subplot(4,4, idx+1)\n",
    "    plt.axis('off')\n",
    "    plt.title('[{}]'.format(mnist.train.labels[idx]))\n",
    "    plt.imshow(mnist.train.images[idx].reshape((28,28)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "x = tf.placeholder(\"float\", [None, 784])\n",
    "y = tf.placeholder(\"int64\", [None])\n",
    "learning_rate = tf.placeholder(\"float\")\n",
    "\n",
    "def initialize(shape, stddev=0.1):\n",
    "  return tf.truncated_normal(shape, stddev=0.1)\n",
    "\n",
    "L1_units_count = 100\n",
    "\n",
    "W_1 = tf.Variable(initialize([784, L1_units_count]))\n",
    "b_1 = tf.Variable(initialize([L1_units_count]))\n",
    "logits_1 = tf.matmul(x, W_1) + b_1\n",
    "output_1 = tf.nn.relu(logits_1)\n",
    "\n",
    "L2_units_count = 10 \n",
    "W_2 = tf.Variable(initialize([L1_units_count, L2_units_count]))\n",
    "b_2 = tf.Variable(initialize([L2_units_count]))\n",
    "logits_2 = tf.matmul(output_1, W_2) + b_2  \n",
    "\n",
    "logits = logits_2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "cross_entropy_loss = tf.reduce_mean(\n",
    "    tf.nn.sparse_softmax_cross_entropy_with_logits(logits=logits, labels=y))\n",
    "\n",
    "optimizer = tf.train.GradientDescentOptimizer(\n",
    "    learning_rate=learning_rate).minimize(cross_entropy_loss)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [],
   "source": [
    "pred = tf.nn.softmax(logits)\n",
    "correct_pred = tf.equal(tf.argmax(pred, 1), y)\n",
    "accuracy = tf.reduce_mean(tf.cast(correct_pred, tf.float32))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "batch_size = 32\n",
    "trainig_step = 1000\n",
    "\n",
    "saver = tf.train.Saver()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "after 100 training steps, the loss is 0.373442, the validation accuracy is 0.8562\n",
      "after 200 training steps, the loss is 0.381999, the validation accuracy is 0.9118\n",
      "after 300 training steps, the loss is 0.534449, the validation accuracy is 0.9186\n",
      "after 400 training steps, the loss is 0.168288, the validation accuracy is 0.9352\n",
      "after 500 training steps, the loss is 0.125424, the validation accuracy is 0.943\n",
      "after 600 training steps, the loss is 0.0604777, the validation accuracy is 0.943\n",
      "after 700 training steps, the loss is 0.195763, the validation accuracy is 0.9422\n",
      "after 800 training steps, the loss is 0.170846, the validation accuracy is 0.954\n",
      "after 900 training steps, the loss is 0.071638, the validation accuracy is 0.9494\n",
      "the training is finish!\n",
      "the test accuarcy is: 0.9489\n"
     ]
    }
   ],
   "source": [
    "with tf.Session() as sess:\n",
    "    sess.run(tf.global_variables_initializer())\n",
    "\n",
    "    #定义验证集与测试集\n",
    "    validate_data = {\n",
    "        x: mnist.validation.images,\n",
    "        y: mnist.validation.labels,\n",
    "    }\n",
    "    test_data = {x: mnist.test.images, y: mnist.test.labels}\n",
    "\n",
    "    for i in range(trainig_step):\n",
    "        xs, ys = mnist.train.next_batch(batch_size)\n",
    "        _, loss = sess.run(\n",
    "            [optimizer, cross_entropy_loss],\n",
    "            feed_dict={\n",
    "                x: xs,\n",
    "                y: ys,\n",
    "                learning_rate: 0.3\n",
    "            })\n",
    "\n",
    "        #每100次训练打印一次损失值与验证准确率\n",
    "        if i > 0 and i % 100 == 0:\n",
    "            validate_accuracy = sess.run(accuracy, feed_dict=validate_data)\n",
    "            print(\n",
    "                \"after %d training steps, the loss is %g, the validation accuracy is %g\"\n",
    "                % (i, loss, validate_accuracy))\n",
    "            saver.save(sess, './model.ckpt', global_step=i)\n",
    "\n",
    "    print(\"the training is finish!\")\n",
    "    #最终的测试准确率\n",
    "    acc = sess.run(accuracy, feed_dict=test_data)\n",
    "    print(\"the test accuarcy is:\", acc)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "INFO:tensorflow:Restoring parameters from ./model.ckpt-900\n",
      "0.9375\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x576 with 16 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "with tf.Session() as sess:\n",
    "    ckpt = tf.train.get_checkpoint_state('./')\n",
    "    if ckpt and ckpt.model_checkpoint_path:\n",
    "        saver.restore(sess, ckpt.model_checkpoint_path)\n",
    "        final_pred, acc = sess.run(\n",
    "            [pred, accuracy],\n",
    "            feed_dict={\n",
    "                x: mnist.test.images[:16],\n",
    "                y: mnist.test.labels[:16]\n",
    "            })\n",
    "        orders = np.argsort(final_pred)\n",
    "        plt.figure(figsize=(8, 8))\n",
    "        print(acc)\n",
    "        for idx in range(16):\n",
    "            order = orders[idx, :][-1]\n",
    "            prob = final_pred[idx, :][order]\n",
    "            plt.subplot(4, 4, idx + 1)\n",
    "            plt.axis('off')\n",
    "            plt.title('{}: [{}]-[{:.1f}%]'.format(mnist.test.labels[idx],\n",
    "                                                  order, prob * 100))\n",
    "            plt.imshow(mnist.test.images[idx].reshape((28, 28)))\n",
    "\n",
    "    else:\n",
    "        pass"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
